Computer systems commonly store data in random access memory (RAM). Memory locations in RAM can be rapidly overwritten. RAM is typically volatile, meaning that all information is lost when power is removed. Historically, non-changing software (called firmware) for computer processor based systems was often stored in non-volatile, non-erasable, read-only memory (ROM). If the software needed to be changed, ROMs were replaced. More recently, various programmable or erasable non-volatile memory technologies have been developed. Typically, erasable non-volatile memory devices do not have to be removed for firmware updates. Examples include programmable read only memory (PROM), and electrically erasable programmable read only memory (EEPROM), also called flash memory. Flash memory chips may be electronically erased, and each erased memory location can be written once. To change the contents of a memory location, the entire chip (or in some versions, a large segment or block of the chip) must be erased, and the contents must then be rewritten.
Some information changes over time and needs to be saved in non-volatile memory. For example, an electromechanical computer peripheral system may need to track the number of hours the unit has been powered on, for preventive maintenance. A common approach is to update the power-on data every hour. The power-on information must be saved in non-volatile memory. One common approach is to save such data in low power static RAM, with a battery to retain power to the static RAM when system power is off. This approach is relatively expensive, and reliability depends on the integrity of the battery charge and the power switch over circuitry.
There is an ongoing need for non-volatile storage of changing data.